TCP/IP is a protocol system—a collection of protocols, rules, and requirements that enable computer network communications. At its core, TCP/IP provides one of several universally-accepted structures for enabling information or data to be transferred and understood (e.g., packaged and unpackaged) between different computers that communicate over a network, such as a local area network (LAN), a wide area network (WAN), or a public-wide network, such as the Internet.
The “IP” part of the TCP/IP protocol stands for “Internet protocol” and is used to ensure that information or data is addressed, delivered, and routed to the appropriate entity, network, or computer system. In contrast, “TCP,” which stands for “transport control protocol,” ensures that the actual content of the information or data that is transmitted is received completely and accurately. To ensure such reliability, TCP uses extensive error control and flow control techniques. The reliability provided by TCP, however, comes at a cost—increased network traffic and slower delivery speeds—especially when contrasted with less reliable but faster protocols, such as UDP (“user datagram protocol”).
A typical network 100a is illustrated in FIG. 1A and includes at least two remote machines in communication with each other over a communications medium. Specifically, as shown, one machine 110 is a sending computer, server, or system (which we will arbitrarily designate as the “source machine” or TCP processor system) that communicates over a communications medium or network, such as the Internet 150, with another machine 160, which is the receiving computer, server, or system (which we will arbitrarily designate as the “destination machine” or TCP receiver system). Data or information typically travels in both directions 120, 130 between the source machine 110 and the destination machine 160 as part of a normal electronic communication.
In more complex computer networks, such as network 100b as illustrated in FIG. 1B, one server 115 acts as a source machine on behalf of numerous computers 111 networked with the server 115 that communicate over the communications medium or network 150, with other servers 165, each with their own networked computers 185,186,187. Server 115 also communicates with other standalone computers 175. Data or information typically travels in both directions on communication lines 125 between source machines and destination machines as part of normal electronic communications.
It is helpful to understand that the TCP/IP protocol defines discrete functions that are to be performed by compliant systems at different “layers” of the TCP/IP model. As shown in FIG. 2, the TCP/IP model 200 includes four layers, namely, the network access layer 210, the internet layer 220, the transport layer 230, and the application layer 240. Each layer is intended to be independent of the other layers, with each layer being responsible for different aspects of the communication process. For example, the network access layer 210 provides a physical interface with the physical network and formats data for the transmission medium, addresses data based on physical hardware addresses, and provides error control for data delivered on the physical network. Among other things, the internet layer 220 provides logical, hardware-independent addressing to enable data to pass between systems with different architectures. The transport layer 230 provides flow control, error control, and acknowledgment services, and serves as an interface for network applications. The application layer 240 provides computer applications for network troubleshooting, file transfer, remote control, and Internet activities.
According to TCP/IP protocol, each layer plays its own role in the communications process. For example, out-going data from the source machine is packaged first at the application layer 240, and then it is passed down the stack for additional packaging at the transport layer 230, the internet layer 220, and then finally the network access layer 210 of the source machine before it is transmitted to the destination machine. Each layer adds its own header (and/or trailer) information to the data package received from the previous higher layer that will be readable and understood by the corresponding layer of the destination machine. Thus, in-coming data received by a destination machine is unpackaged in the reverse direction (from network access layer 210 to application layer 240), with each corresponding header (and/or trailer) being read and removed from the data package by the respective layer prior to being passed up to the next layer.
The process 300 of encapsulating data at each successive layer is illustrated briefly in FIG. 3. For example, out-going user data 305 is packaged by a computer application 341 to include application header 345. The data package 340 created by the application 341 is called a “message.” The message 340 (also shown as application data 342) is further encapsulated by a TCP manager 331 to include TCP header 335 (note: for purposes of the present invention and discussion, the transport layer is TCP rather than another protocol, such as UDP). The data package 330 created by the TCP manager 331 is called a “segment” The segment 330 is encapsulated further by the IP manager 321 to include IP header 325. The data package 320 created by the IP manager 321 is called a “datagram.” The datagram 320 is encapsulated yet further by an Ethernet driver 311 (at the network access layer) to include Ethernet header 315 and Ethernet trailer 316. The data package 310 created by the Ethernet driver 311 is called a “frame.” This frame 310 is a bitstream of information that is transmitted, as shown in FIG. 1, across the communications medium 150 from the source machine 110 to the destination machine 160. As stated previously, the process at the destination machine 160 of unpacking each data package occurs. by layer, in the reverse order.
It should be understood that the amount of data that needs to be transmitted between machines often exceeds the amount of space that is feasible, efficient, or permitted by universally-accepted protocols for a single frame or segment. Thus, data to be transmitted and received will typically be divided into a plurality of frames (at the IP layer) and into a plurality of segments (at the TCP layer). TCP protocols provide for the sending and receipt of variable-length segments of information enclosed in datagrams. TCP protocols provide for the proper handling (transmission, receipt, acknowledgement, and retransmission) of segments associated with a given communication.
At its lowest level, computer communications of data packages or packets of data are assumed to be unreliable. For example, packets of data may be lost or destroyed due to transmission errors, hardware failure or power interruption, network congestion, and many other factors. Thus, the TCP protocols provide a system in which to handle the transmission and receipt of data packets in such an unreliable environment. For example, based on TCP protocol, a destination machine is adapted to receive and properly order segments, regardless of the order in which they are received, regardless of delays in receipt, and regardless of receipt of duplicate data. This is achieved by assigning sequence numbers (left edge and right edge) to each segment transmitted and received. The destination machine further acknowledges correctly received data with an acknowledgment (“ACK”) or a selective acknowledgment (“SACK”) back to the source machine. An ACK is a positive acknowledgment of data up through a particular sequence number. By protocol, an ACK of a particular sequence number means that all data up to but not including the sequence number ACKed has been received. In contrast, a SACK, which is an optional TCP protocol that not all systems are required to use, is a positive acknowledgement of data up through a particular sequence number, as well as a positive acknowledgment of up to 3-4 “regions” of non-continguous segments of data (as designated by their respective sequence number ranges). From a SACK, a source machine can determine which segments of data have been lost or not yet received by the destination machine. The destination machine also advertises its “local” offer window size (i.e., a “remote” offer window size from the perspective of the source machine), which is the amount of data (in bytes) that the destination machine is able to accept from the source machine (and that the source machine can send) prior to receipt of (i.e., without having to wait for) any ACKs or SACKs back from the destination machine. Correspondingly, based on TCP protocols, a source machine is adapted to transmit segments of data to a destination machine up to the offer window size advertised by the destination machine. Further, the source machine is adapted to retransmit any segment(s) of data that have not been ACKed or SACKed by the destination machine. Other features and aspects of TCP protocols will be understood by those skilled in the art and will be explained in greater detail only as necessary to understand and appreciate the present invention. Such protocols are described in greater detail in a number of publicly-available RFCs, including RFCs 793, 2988, 1323, and 2018, which are incorporated herein by reference in their entirety.
The act of formatting and processing TCP communications at the segment level is generally handled by computer hardware and software at each end of a particular communication. Typically, software accessed by the central processing unit (CPU) of the sender and the receiver, respectively, manages the bulk of TCP processing in accordance with industry-accepted TCP protocols. However, as the demand for the transfer of greater amounts of information at faster speeds has increased and as available bandwidth for transferring data has increased, CPUs have been forced to devote more processing time and power to the handling of TCP tasks—at the expense of other processes the CPU could be handling. “TCP Offload Engines” or TOEs, as they are often called, have been developed to relieve CPUs of handling TCP communications and tasks. TOEs are typically implemented as network adapter cards or as components on a network adapter card, which free up CPUs in the same system to handle other computing and processing tasks, which, in turn, speeds up the entire network. In other words, TCP tasks are “off-loaded” from the CPU to the TOE to improve the efficiency and speed of the network that employees such TOEs.
Conventional TOEs use a combination of hardware and software to handle TCP tasks. For example, TOE network adapter cards have software and memory installed thereon for processing TCP tasks. TOE application specific integrated circuits (ASICs) are also used for improved performance; however, ASICs typically handle TCP tasks using firmware/software installed on the chip and by relying upon and making use of readily-available external memory. Using such firmware and external memory necessarily limits the number of connections that can be handled simultaneously and imposes processing speed limitations due to transfer rates between separate components. Using state machines designed into the ASIC and relying upon the limited memory capability that can be integrated directed into an ASIC improves speed, but raises a number of additional TCP task management hurdles and complications if a large number of simultaneous connections are going to be managed efficiently and with superior speed characteristics.
For these and many other reasons, there is a need for systems and methods for improving TCP processing capabilities and speed, whether implemented in a TOE or a CPU environment.
There is a need for systems and methods of improving the speed of TCP communications, without sacrificing the reliability provided by TCP.
There is a need for systems and methods that take advantage of state machine efficiency for handling TCP tasks but in a way that remains compliant and compatible with conventional TCP systems and protocols.
There is a need for systems and methods that enable state machine implemented on one or more computer chips to handle TCP communications on the order of 1000 s and 10,000 s simultaneous communications and at processing speed exceeding 10 GHz.
There is a need for a system using a hardware TOE device that is adapted to support the Selective ACK (SACK) option of TCP protocol so that a source machine is able to cut back or minimize unnecessary retransmission. In other words, a system in which the source machine only retransmits the missing segments and avoids or minimizes heavy network traffic.
There is a need for systems and methods of continuing transmission of TCP segments for a particular communication even while simultaneously retransmitting TCP segments for the same communication.
There is a need for systems and methods of retransmitting TCP segments using a TCP state machine with limited on-chip memory.
There is a need for a system for efficiently retransmitting one or more TCP segments in a fast retransmission arrangement when SACK tracking is not being used.
There is a need for a system for efficiently retransmitting one or more TCP segments in a fast retransmission arrangement when SACK tracking is enabled and when such retransmission includes TCP segments between a last ACKed segment and a SACK region or between two SACK regions.
There is a need for a system for efficiently retransmitting TCP segments after a retransmission time out (RTO) condition in which no ACKs are received back from the TCP receiver system after a predetermined window of time.
There is a need for a system having an improved TCP window calculator adapted for use in a high speed, low memory hardware TOE device.
For these and many other reasons, there is a general need for a system or method for the retransmission of a TCP segment to a TCP receiving system in a processor system for the management of TCP communications wherein the processing system manages an original TCP connection with a TCP receiving system, the original TCP connection having socket, transmission, and reception characteristics and wherein the method comprises the steps of determining that the TCP segment previously transmitted on the original TCP connection to the TCP receiving system needs to be retransmitted and further establishing a selective context duplicated connection with the TCP receiving system, the selective context duplicated connection distinct from but having similar socket and transmission characteristics as the original TCP connection. The method further provides for retransmitting the TCP segment to the TCP receiving system by using the selective context duplicated connection rather than the original TCP connection and subsequently maintaining the original TCP connection for on-going transmission of additional TCP segments to the TCP receiving system and for receipt of communications back from the TCP receiving system responsive to the TCP segment retransmitted on the selective context duplicated connection.
There is also a general need for a system or method for the retransmission of a TCP segment to a designated one of a plurality TCP receiving systems in a processing system for the management of TCP communications, wherein the processor system is in electronic communication with the plurality of TCP receiving systems and wherein the method comprises the steps of managing a plurality of original TCP connections with the plurality of TCP receiving systems, each original TCP connection having respective socket, transmission, and reception characteristics. The method also determines that the TCP segment previously transmitted to the designated one TCP receiving system on the original TCP connection with the designated one TCP receiving system needs to be retransmitted, in addition to establishing a selective context duplicated connection with the designated one TCP receiving system, the selective context duplicated connection distinct from but having similar socket and transmission characteristics as the original TCP connection with the designated one TCP receiving system. The TCP segment is retransmitted to the receiving TCP system using the selective context duplicated connection rather than the original TCP connection with the designated one TCP receiving system. Further the original TCP connection is maintained with the designated one TCP receiving system for on-going transmission of additional TCP segments to the designated one receiving TCP system and for receipt of communications back from the designated one receiving TCP system responsive to the TCP segment retransmitted on the selective context duplicated connection.
There is also a general need, in a TCP fast retransmit communication system having a TCP transmitter system in communication with a plurality of TCP receiving systems, for a system or method having a TCP transmitter system that comprises a plurality of available connections wherein the available connections include a plurality of original TCP connections and at least one connection available as a selective context duplicated connection. Additionally, a TCP state engine is configured to maintain the plurality of original TCP connections and to transmit TCP segments over the plurality of original TCP connections to each of the plurality of TCP receiving systems and to receive acknowledgements of received TCP segments back from each of the TCP receiving systems, each original TCP connection having respective socket, transmission, and reception characteristics, a TCP micro engine in electronic communication with the TCP state engine, the TCP micro engine configured to establish the selective context duplicated connection between the TCP state engine and a designated one TCP receiving system upon receipt of a retransmission assistance request by the TCP state engine. Further, wherein after determination by the TCP state engine that a particular TCP segment has not been acknowledged by the designated one TCP receiving system, the TCP state engine transmits the retransmission assistance request to the TCP micro engine to establish the selective context duplicated connection with the designated one TCP receiving system, the particular TCP segment being retransmitted to the designated one TCP receiving system on the selective context duplicated connection rather than on the original TCP connection with the designated one TCP receiving system, the selective context duplicated connection distinct from but having similar socket and transmission characteristics as the original TCP connection with the designated one TCP receiving system.
There is also a general need, in a processor system for managing TCP communications, the processor system managing an original TCP connection with a TCP receiving system, the original TCP connection having socket, transmission, and reception characteristics, for a system or method for the fast retransmission of one or more contiguous TCP segments preceding a SACK region of TCP segments comprising the steps of determining that the one or more contiguous TCP segments previously transmitted on the original connection to the TCP receiving system needs to be retransmitted and as a result establishing a selective context duplicated connection with the TCP receiving system, the selective context duplicated connection having similar socket and transmission characteristics as the original TCP connection. Further, the method comprises the steps of retransmitting the one or more contiguous TCP segments to the TCP receiving system using the selective context duplicated connection and maintaining the original TCP connection for on-going transmission of additional TCP segments to the TCP receiving system and for receipt of communications back from the TCP receiving system responsive to the one or more contiguous TCP segments retransmitted on the selective context duplicated connection.
There is also a general need, in a processor system for managing TCP communications, the processor system managing an original TCP connection with a TCP receiving system, the original TCP connection having socket, transmission, and reception characteristics, a system or method for the fast retransmission of one or more contiguous TCP segments comprising the steps of determining that the one or more contiguous TCP segments previously transmitted on the original TCP connection to the TCP receiving system need to be retransmitted, the one or more contiguous TCP segments located between first and second SACK regions of TCP segments and establishing a selective context duplicated connection with the TCP receiving system, the selective context duplicated connection having similar socket and transmission characteristics as the original TCP connection. The method further retransmits the one or more contiguous TCP segments to the TCP receiving system using the selective context duplicated connection and maintains the original TCP connection for on-going transmission of additional TCP segments to the TCP receiving system and for receipt of communications back from the TCP receiving system responsive to the one or more contiguous TCP segments retransmitted on the selective context duplicated connection.
There is also a general need for a processor system for managing TCP communications, the processor system managing an original TCP connection with a TCP receiving system, the original TCP connection having socket, transmission, and reception characteristics, that comprises a method for the fast retransmission of first and second groups of one or more contiguous TCP segments, comprising the steps of determining that the first and second groups of one or more contiguous TCP segments previously transmitted on the original TCP connection to the TCP receiving system need to be retransmitted, the first group of one or more contiguous TCP segments preceding a first SACK region of TCP segments, the second group of one or more contiguous TCP segments located between the first SACK region and a second SACK region of TCP segments; establishing a selective context duplicated connection with the TCP receiving system, the selective context duplicated connection having similar socket and transmission characteristics as the original TCP connection. The method further retransmits the first and second groups of one or more contiguous TCP segments to the TCP receiving system using the selective context duplicated connection; and maintaining the original TCP connection for on-going transmission of additional TCP segments to the TCP receiving system and for receipt of communications back from the TCP receiving system responsive to the first and second groups of one or more contiguous TCP segments retransmitted on the selective context duplicated connection.
There is also a general need, in a processor system for managing TCP communications, the processor system managing an original TCP connection with a TCP receiving system, the original TCP connection having socket, transmission, and reception characteristics, for a system or method for the fast retransmission of first and second groups of one or more contiguous TCP segments comprising the steps of determining that the first group of one or more contiguous TCP segments previously transmitted on the original TCP connection to the TCP receiving system need to be retransmitted, the first group preceding a first SACK region of TCP segments and establishing a first selective context duplicated connection with the TCP receiving system, the first selective context duplicated connection having similar socket and transmission characteristics as the original TCP connection. The method further retransmits the first group of one or more contiguous TCP segments to the TCP receiving system using the first selective context duplicated connection and determines that the second group of one or more contiguous TCP segments previously transmitted on the original TCP connection to the TCP receiving system need to be retransmitted, the second group located between the first SACK region and a second SACK region of TCP segments; establishing a second selective context duplicated connection with the TCP receiving system, the second selective context duplicated connection also having similar socket and transmission characteristics as the original TCP connection. Next, the method retransmits the second group of one or more contiguous TCP segments to the TCP receiving system using the second selective context duplicated connection and maintains the original TCP connection for on-going transmission of additional TCP segments to the TCP receiving system and for receipt of communications back from the TCP receiving system responsive to the first and second groups of one or more contiguous TCP segments retransmitted on the first and second selective context duplicated connections.
The present invention meets one or more of the above-referenced needs as described herein in greater detail.